package com.industry.framework.core.generic.record;


import lombok.Data;
import org.apache.commons.lang3.ArrayUtils;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/*
 操作记录表wrapper 用于接受前端返回
 前端每次新增或更新表单时 需要返回 updateFields[] 、newVal[] 、 oldValue[] 、 bizType
 内部可转换为List<UpdateFiledsWrapper> 列表数据
 */
@Data
public class RecordWrapper {

    //template 更新操作 :  【操作日期】 ： 【操作人】 更新 【字段名】 【旧值】 -> 【新值】
    //template 新增操作 :  【操作日期】 ： 【操作人】 新建 【字段名】 【新值】
    //template 上传操作 :  【操作日期】 ： 【操作人】 上传附件 【字段名】 【新值】

    private List<UpdateFiledsWrapper> updateFiledsWrapperList;

    private String targetTable; //操作记录表名

    private String[] updateFields;

    private String[] newVals;

    private String[] oldVals;

    private String bizType;

    @Data
    static
    class UpdateFiledsWrapper{
        private String updateField;
        private String newVal;
        private String oldVal;

        public UpdateFiledsWrapper(String updateField , String newVal ,String oldVal){
            this.updateField = updateField;
            this.newVal = newVal;
            this.oldVal = oldVal;
        }
    }

    public void extract(){
        List<UpdateFiledsWrapper> ls = new ArrayList<>();
        if( updateFields!= null && newVals!=null && oldVals!=null &&
                updateFields.length == newVals.length && newVals.length == oldVals.length)
        {
            int turn = 0;
            do {
                ls.add(new UpdateFiledsWrapper(updateFields[turn], newVals[turn], oldVals[turn]));
                turn ++;
            } while (turn < updateFields.length);
        }
        this.updateFiledsWrapperList = ls;
    }

}
